The present invention is directed, in general, to testing integrated circuits and, more specifically, to isolating and testing individual modules within an integrated circuit.
An integrated circuit (IC) typically consists of large numbers of interconnected digital and/or analog elements. (e.g., logical gates, communication circuitry, memories, etc.) for carrying out predetermined operations. Recent advances in fabrication technology have made it possible to integrate a plurality of circuitry of different functionality into a single chip. Such implementations are usually known as System-On-a-Chip (SOC). Each circuitry, usually called a module, is designed as an independent unit having its power supply, input and output lines.
In a typical SOC development, a separate team of hardware designers designs each module. A verification team specifies and develops tests and tools, for verifying the SOC. The verification tests guaranties that the IC has been manufactured correctly and performs as expected according to simulations. However, because of the relative limitations of packaging technology, only a comparatively limited number of primary input and primary output pins (I/O pins) are provided for the testing of an integrated circuit.
Usually, each module is imported from a different team, and integrated into the SOC. Part of the design of the SOC concerns integrating adequate testing features for testing the module in the SOC. It is therefore mostly desired to exploit the modules"" existing testing tools, and testing environments, of each module, and integrate them into the SOC testing environment. To utilize the existing testing infrastructure of each module for the testing of the SOC, some additional hardware is integrated to enable an efficient isolation of each of the module""s input/output (I/O) lines from other operating modules, and apply a verification test compatible to its environment.
When testing the chip""s modules at a xe2x80x9cstand alonexe2x80x9d mode, the I/O lines of the module are isolated to prevent interference that may originate at other operating modules attached to the tested module. The verification is actually conducted by applying a set of test vectors (various combinations of possible Input signals) to the inputs of the module and monitoring the output signals resulting from these signals. The expected responses resulting from a set of known input patterns can be generated based on the intended function (and/or operation) of the circuitry (functional testing). A successful verification is one in; which the output patterns that are obtained corresponding to a set of known input patterns, match the expectations according to simulations or the designated functionality of the module.
However, since the access to the module""s I/O lines is usually limited, and since the verification hardware should not affect the normal functionality of the chip (i.e, in its active mode), special attention is, required to design the additional testing circuitry involved in such tests. One method for obtaining verification test results is schematically illustrated in FIG. 1. In this example, the output lines of the modules 101, 102, and 103, are connected to the chip""s output port 105 through a multiplexer (MUX) 104.
The MUX 104 in this case acts as an arbitrator, which is utilized to direct the output line of the tested module to the chip""s output port 105. In a similar fashion, the MUXs 321, 322, and 323 are utilized to select the active input of each module. Each one of the MUXs 321, 322, and 323 is provided with a functional signal (i.e., the input signal utilized while the module is in its normal operation mode) and the test bus signals on 307. The arbitration unit 305 produces a control signal on lines 331-333, which are utilized by the MUXs to select the appropriate signal for their output.
Such methods are efficiently implemented with relatively little additional circuitry, and control signals. However, since each module""s output is directed to the output port 105 through the MUX 104, this type of testing circuitry is substantially costly in terms of the lengths of the conducting lines used, and therefore also in chip area consumption. Typically the MUX is located near the IC""s port resulting in the waste of long output lines drawn from each module""s output towards the MUX Inputs. Other disadvantages of such methods are expressed in extra delays, which are added to the functional signal that has to pass through the MUX.
In a typical IC, each of the modules has I/O consisting of a plurality of conducting lines. It is therefore an important necessity to struggle to provide efficient testing means utilizing I/O testing lines that are as short as possible.
Another attitude for conducting verification test to ICs is known as the xe2x80x9cBoundary-Scan Architecturexe2x80x9d (IEEE t (Standard 1149.1), developed by the Joint Test Action Group (JTAG). The JTAG group developed a testing method based on the concept of a serial shift register positioned around the boundary of the tested device. This concept resembles the so-called xe2x80x9cbed-of-nailsxe2x80x9d technique that was the customary testing technique of printed circuits in the mid-1970s.
FIG. 2 schematically illustrates the boundary-scan testing method developed by the JTAG group. Each of the modules 101, 102 and 103 is equipped with supplementary xe2x80x9cboundary scan cellsxe2x80x9d (hereinafter referred to as xe2x80x9cscan cellsxe2x80x9d), 201a-201f, 202a-202f, and 203a-203f, that are located on the boundaries of each module. Each scans cell is a multi-purpose memory element capable of performing xe2x80x9cshift-in,xe2x80x9d xe2x80x9cshift-out,xe2x80x9d xe2x80x9cupdate,xe2x80x9d and xe2x80x9ccapturexe2x80x9d operations. In this fashion, particular tests can be applied. to the device interconnects through the scan path formed by serially connecting the scan cells in the form of a chain.
Some of the scan cells are utilized to input test signals to the module, others to capture the module""s output signals. For instance, module B 102 is equipped with scan cells 202a-202c which are utilized to introduce test patterns to the module, and scan cells 202d-202f to collect the output signals resulting from those input signals.
This architecture allows the testing of each module in its functioning environment. However, it is time consuming and cumbersome, especially when there are a substantial number of modules to test. As an example, let us suppose that a test pattern should be applied to module B 102. In such a case, the test patterns should be applied via the input port 207, and travel towards module B""s input scan cells 202a-202f by performing a serial shift of the scan cells, i.e., passing the signals through module A""s scan cells 201a-201f. Similarly, the resulting output pattern stored in the module""s output scan cells 202d-202f will reach the output port 208 by serially shifting the signals along the scan path through module C scan cells 203a-203f. 
As will be appreciated by skilled artisans, the test logic that is involved in boundary-scan tests is complex. More precisely, such test logic involves full control of the modules"" clock(s) (the clock is stopped during shift-in and shift-out, and single stepped in between). As a result the testing is not run in real time, and the xe2x80x9cstand alonexe2x80x9d tests and testing environment need to be converted.
Another testing technique is disclosed in U.S. Pat. No. 5,936,976, and schematically illustrated in FIG. 3. This method utilizes switching devices to select the output signal, and multiplexers to select the input signal of the module to be tested. In the drawing, switching devices 211, 212, and 213 are utilized to select the output signal of the tested module. Similar to what was described hereinabove, in order to select the output signal of one of the modules 101, 102, or 103, the respective switch device is activated (switched to its conducting state), and the other switches deactivated (switched to their disconnect state). The selected output signal is fed into the output register 306.
The input signals of the modules 101, 102, and 103 are fed through the MUXs 321, 322, and 323, respectively. The MUXs selects the input signal to be applied to the modules, which may be the normal input signals 301, 302, and 303 (i.e., the signals utilized during the normal operation of the system in its functional mode), or the test vector signal 307. The test signal 307 is originated from the test vector register 304, which is actually a register that holds the test patterns that are applied to the SOC inputxe2x80x94i.e., part of the testing infrastructure. The arbitration unit 305 is utilized to select the tested module by introducing a select signal on the respective line 331, 332, or 333. The select signal causes the respective switch device to switch to its conducting state, and the MUXs 321, 322, and 323 to choose the test input signal on 307.
Although this method benefits from application of the two perspectives discussed earlier, the test signals and the resulting output signals are always passed via the registers 304 and 306, respectively. Such a method does not enable verification of modules in a xe2x80x9cstand alonexe2x80x9d environment since the incoming and outgoing signals are always passed via dedicated registers. Other disadvantages stem from the delay times associated with the operation of such testing methods (i.e., using registers as buffers and MUX for arbitration), which also affect normal operation of the IC in its functional mode.
It should be understood that the functionality of the additional hardware comprised into the IC to enable the verification tests is later disabled or forced into a state which enables the normal operation of the IC in its functional mode. In the case of MUXs, for instance, when the IC operates in its functional mode, the arbitration unit 305 is configured to select the functional mode signals. In this case, the additional hardware affects the time performance of the IC when in its functional mode (due to the additional gate delay).
All the methods described above have not yet provided satisfactory solutions to the problems involved in an efficient verification test wherein the tested modules are required to be isolated from other modules in the integrated circuit.
There is, therefore, a need in the art for a method and apparatus for efficiently isolating modules in an integrated, circuit for test and verification. It would particularly be desirable for the method and apparatus to provide verification testing of integrated circuit modules with a minimal effect on the timing behavior of the circuitry in the functional mode, with a relatively small number of test signal interconnects, and with reduced or minimal the area required by long conducting lines.
To address the above-discussed deficiencies of the prior art, it is a primary object of the present invention to provide, for use in integrated circuits having one or more modules, a method for carrying out verification tests of the modules using I/O ports of the IC for inputting or outputting incoming and outgoing signals. A first set of externally controlled buffers, such as tri-state buffers, are provided for connecting or isolating predetermined I/O contacts of each module that are interconnected to contacts of other modules, and a second set of externally controlled buffers are provided for connecting or isolating predetermined I/O contacts of each module that are connected to the I/O ports and a common bus, connected to the I/O ports, for inputting test signals into, and for receiving output signals from, each module, through externally controlled buffers that belong to the second set, through the predetermined I/O contacts of each module, and through the I/O ports, and a third set of externally controlled bus holders, each of which is connected to the output of a corresponding buffer from the first set, are provided for applying the last logic state that appeared on each I/O contact before isolating the I/O contact by a buffer from the first set, are provided. Whenever a module is selected for testing, the current value that appears on each I/O contact that is connected to other modules is stored in its corresponding bus holder, so as to essentially prevent DC leakage currents. The I/O contacts connected to other modules are isolated by switching the corresponding buffers to their isolating state and immediately after, the corresponding stored current value is applied to each I/O contact that is connected to other modules, in order to essentially prevent DC leakage currents from flowing. A test signal is applied to the selected module, after connecting the input I/O contacts, and the output I/O contacts, of the selected module, that are connected to the common bus are isolated by controlling the corresponding externally controlled buffers from the second set. A signal that is output from the selected module is read after connecting the output I/O contacts, and the output I/O contacts, of the selected module, that are connected to the common bus are connected by controlling the corresponding externally controlled buffers from the second set.
The foregoing has outlined rather broadly the features and technical advantages of the present invention so that those skilled in the art may better understand the detailed description of the invention that follows. Additional features and advantages of the invention will be described hereinafter that form the subject of the claims of the invention. Those skilled in the art will appreciate that they may readily use the conception and the specific embodiment disclosed as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. Those skilled in the art will also realize that such equivalent constructions do not depart from the spirit and scope of the invention in its broadest form.
Before undertaking the DETAILED DESCRIPTION OF THE INVENTION below, it may be advantageous to set forth definitions of certain words or phrases used throughout this patent document: the terms xe2x80x9cincludexe2x80x9d and xe2x80x9ccomprise,xe2x80x9d as well as derivatives thereof, mean inclusion without limitation; the term xe2x80x9corxe2x80x9d is inclusive, meaning and/or; the phrases xe2x80x9cassociated withxe2x80x9d and xe2x80x9cassociated therewith,xe2x80x9d as well as derivatives thereof, may mean to include, be included within, interconnect with, contain, be contained within, connect to or with, couple to or with, be communicable with, cooperate with, interleave, juxtapose, be proximate to, be bound to or with, have, have a property of, or the like; and the term xe2x80x9ccontrollerxe2x80x9d means any device, system or part thereof that controls at least one operation, weather such a device is implemented in hardware, firmware, software or some combination of at least two of the same. It should be noted that the functionality associated with any particular controller may be centralized or distributed, whether locally or remotely. Definitions for certain words and phrases are provided throughout this patent document, and those of ordinary skill in the art will understand that such definitions apply in many, if not most, instances to prior as well as future uses of such defined words and phrases.